package ClassDesignerTest;

import java.util.HashSet;
import java.util.Set;

/**
 * 一、 set集合特点：
 *    1、不包含重复元素的集合
 *    2、没有带索引的方法，所以不能用for循环遍历
 *  
 *   HashSet： 对集合的迭代顺序不作任何保证
 * 二、hashCode方法：
 *    1、 同一对象的哈希值是相同的（同一个对象多次调用hashcode（）方法返回的哈希值是相同的） 
 *    2、 不同对象的哈希值是不同的（通过方法重写，可以实现不同对象的哈希值相同 ，比如“重地”与“通话”）
 *
 * 三、HashSet集合特点：
 *    1、底层数据结构是哈希表
 *    2、对结婚的迭代顺序不作任何保证，即不能保证存储和取出的元素顺序一致
 *    3、没有带索引的方法，所以不能使用for循环遍历
 *    4、由于是Set集合，所以不包含重复元素的集合
 *    
 * 四、LinkedHashSet集合特点：
 *    1、哈希表和链表实现的Set接口，具有可预测的迭代次序
 *    2、由链表保证元素有序，也就是说元素的存储和取出顺序是一致的
 *    3、有哈希表保证元素唯一，也就是说没有重复的元素
 *    
 * 五、TreeSet集合特点：
 *    1、元素有序，这里的有序指按照一定的规则进行排序，具体排序方法取决于构造方法
 *       TreeSet(); 根据元素的自然排序进行排序
 *       TreeSet(Comparator);根据指定的比较器进行排序
 *    2、没有带索引的方法，不能用for循环进行遍历
 *    3、由于是Set集合，所以不包含重复元素的集合
 *    注意：其中 TreeSet<Integer> 中间必须放类 且 如果需要自定义排序规则，需要将 该类实现Comparable接口(implements Comparable<String> {}) ，重写compareTo（）方法，
 *         返回值为1，升序排列（this放前面），返回值为-1，降序排列（this放后面）
 *         或者采用匿名内部类的形式，new Comparator<String>(){ @Override public int compare(){return num;}}
 *    
 *   
 *    
 *    
 */
public class SetTest {
   public static void main(String[] args) {
//	  创建集合对象
	   Set<String> set = new HashSet<String>();

	   //	添加元素
	   set.add("hello");
	   set.add("world");
	   set.add("java");
	   
//	   遍历
	   for(String s : set) {
		   System.out.println(s);
	   }
}
}
